﻿using System.Collections.ObjectModel;

namespace Mitosoft.Definitions.ViewModels
{
  /// <summary>
  /// To be implemented to represent a view model containing data for a tree view item.
  /// </summary>
  public interface ITreeViewItemViewModel
  {
    /// <summary>
    /// Returns the logical child items of this object.
    /// </summary>
    ObservableCollection<ITreeViewItemViewModel> Children { get; }

    /// <summary>
    /// Gets/sets whether the TreeViewItem 
    /// associated with this object is expanded.
    /// </summary>
    bool IsExpanded { get; set; }

    /// <summary>
    /// Gets/sets whether the TreeViewItem 
    /// associated with this object is selected.
    /// </summary> 
    bool IsSelected { get; set; }

    /// <summary>
    /// Gets the parent of this item.
    /// </summary>
    ITreeViewItemViewModel Parent { get; }

    /// <summary>
    /// Gets the text which should be displayed.
    /// </summary>
    string DisplayText { get;  }
  }
}
